Skip to content

Conversation

@uyeon0
Copy link
Collaborator

@uyeon0 uyeon0 commented Jan 22, 2026

User description

오늘도 멋져요 👍✨


PR Type

Enhancement


Description

  • 프로그래머스 12953 문제 해결을 위한 솔루션 구현

  • 최소공배수 계산을 위한 gcd, lcm 함수 추가

  • 배열의 모든 요소에 대한 최소공배수 계산


@uyeon0 uyeon0 added the programmers Programmers 문제 풀이 label Jan 22, 2026
@github-actions
Copy link

PR Reviewer Guide 🔍

🧪 No relevant tests
⚡ Recommended focus areas for review

Algorithmic Efficiency

최소공배수 계산 알고리즘의 시간 복잡도와 재귀 호출 최적화 가능성 검토 필요

function gcd(a, b) {
  if (b === 0) return a;
  return gcd(b, a % b);
}

function lcm(a, b) {
  return (a * b) / gcd(a, b);
}
Edge Case

빈 배열, 단일 요소 배열, 매우 큰 숫자 배열에 대한 테스트 케이스 추가 권장

function solution(arr) {
  let answer = arr[0];

  for (let idx = 1; idx < arr.length; idx++) {
      answer = lcm(answer, arr[idx]);
  }

  return answer;

@github-actions
Copy link

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
Security
BigInt로 숫자 오버플로우 방지

최대공약수와 최소공배수 함수는 수학적으로 정확하지만, 큰 숫자에 대해 오버플로우 위험이 있습니다. BigInt를 사용하여 더 안전하고 큰 숫자를 처리할
수 있도록 개선할 수 있습니다.

Programmers/Level1/12953_N개의_최소공배수.js [8-15]

 function gcd(a, b) {
-  if (b === 0) return a;
-  return gcd(b, a % b);
+  const bigA = BigInt(a);
+  const bigB = BigInt(b);
+  return bigB === 0n ? bigA : gcd(bigB, bigA % bigB);
 }
 
 function lcm(a, b) {
-  return (a * b) / gcd(a, b);
+  return (BigInt(a) * BigInt(b)) / gcd(a, b);
 }
Suggestion importance[1-10]: 8

__

Why: BigInt 사용은 큰 숫자에 대한 안전한 계산을 보장하며, 잠재적인 오버플로우 문제를 방지할 수 있습니다. 수학적 연산의 안정성을 높입니다.

Medium
General
배열 최소공배수 계산을 reduce로 간소화

배열의 최소공배수를 계산하는 로직은 좋지만, 가독성과 재사용성을 높이기 위해 reduce 메서드를 활용하면 더 간결하고 함수형 프로그래밍 스타일로
구현할 수 있습니다.

Programmers/Level1/12953_N개의_최소공배수.js [17-25]

 function solution(arr) {
-  let answer = arr[0];
-
-  for (let idx = 1; idx < arr.length; idx++) {
-      answer = lcm(answer, arr[idx]);
-  }
-  
-  return answer;
+  return arr.reduce((acc, curr) => lcm(acc, curr));
 }
Suggestion importance[1-10]: 7

__

Why: reduce 메서드를 사용하면 코드를 더 간결하고 함수형 프로그래밍 스타일로 만들 수 있습니다. 로직의 핵심은 유지하면서 가독성을 개선합니다.

Medium

@yoouyeon yoouyeon added the ready-to-merge pr을 머지해주세요 label Jan 23, 2026
@uyeon0 uyeon0 merged commit 5eaa684 into main Jan 23, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

programmers Programmers 문제 풀이 ready-to-merge pr을 머지해주세요

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants